<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>

    const obj = { a: 1, b: 2 }
    // 问：
    // Uncaught TypeError: Assignment to constant variable
    // obj = {a:100, b:200}

    // obj.a = 100
    // obj.b = 200
    // 
   function f (obj){
    let result = {}
      // 取出obj的每一个属性名
    for(var key in obj) {
      Object.defineProperty(result, key, {
        value: obj[key],
        writable: false // 不能修改属性值
      })
    }
    return result
   }

   let obj2 = f(obj)
   // obj2与obj1的值是一样，只不过，它的属性值不能修改。
   obj2.a = 100
   obj2.b = 200
   console.log(obj2)

  // Object上有一个现成的函数 freeze 。它就可以来冻住 整个对象
  // 冻住之后，属性值也无法修改。
  // Object.freeze(obj)

  </script>
</body>
</html>